#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton* pushButton = new QPushButton(this);
    pushButton->setText("hello");
    pushButton->move(200, 300);
    this->move(100, 0);
    // 自定义信号槽函数
    connect(pushButton, &QPushButton::clicked, this, &Widget::handleClicked);
//    connect(ui->Button, &QPushButton::clicked, this, &Widget::handleClicked);
    // 自定义信号
    connect(this, &Widget::mySignal, this, &Widget::handleMySignal);
    // 发送出自定义信号，位置不一定在构造函数中
//    emit mySignal();
    connect(this, &Widget::manySignal1, this, &Widget::manySlot1);
    connect(this, &Widget::manySignal1, this, &Widget::manySlot2);
    connect(this, &Widget::manySignal2, this, &Widget::manySlot1);
    connect(this, &Widget::manySignal2, this, &Widget::manySlot3);
}

Widget::~Widget()
{
    delete ui;
}

// 槽函数
void Widget::handleClicked()
{
    // 按下按钮更改窗口标题
    this->setWindowTitle("clicked");
}


void Widget::on_Button_clicked()
{
//    this->setWindowTitle("has been pushed");
    // 点击后发出信号
    emit mySignal("带参数的信号", "");
}

void Widget::handleMySignal(const QString& text)
{
    this->setWindowTitle(text);
}

void Widget::manySlot1()
{
    qDebug() << "manySlot1";
}

void Widget::manySlot2()
{
    qDebug() << "manySlot2";
}

void Widget::manySlot3()
{
    qDebug() << "manySlot3";
}

void Widget::on_Button2_clicked()
{
    emit mySignal("标题2", "");
}
